package designPattern.producersConsumer;

import java.util.LinkedList;

/**
 * 消费者
 * 生产者消费者模式的尝试
 * @author zhaohuihbwj
 * 改动：将仓库改为单例模式
 * 修改时间：2017年4月6日
 */
public class Customer implements Runnable {
    // 每次消费的产品数量
    private int num;

    Customer(int num) {
        this.num = num;
    }

    /*
     *  消费产品，仓库出库
     */
    private void consume(int num) {
        synchronized (Depot.LOCK) {
            LinkedList<Object> list = Depot.getDepot().getList();
            /*
             * 库存不足
			 */
            while (list.size() < num) {
                System.out.println("出库 " + num + ", 库存 " + list.size() + "  出库失败");
                try {
                    Depot.LOCK.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            for (int i = 0; i < num; i++) {
                list.remove();
            }

            System.out.println("出库 " + num + ", 库存 " + list.size() + "  出库成功");

            Depot.LOCK.notifyAll();
        }
    }

    @Override
    public void run() {
        consume(num);
    }
}
